﻿
String.prototype.trim = function()
{
	return this.replace(/(^[\s]*)|([\s]*$)/g, '');
}
String.prototype.trim2 = function()
{
  var vStr = this.trim();
  vStr = vStr.replace(/(^[\s]*)|([\s]*$)/g,   '');   
  vStr = vStr.replace(/(^[　]*)|([　]*$)/g,'');
  return  vStr;
}
String.prototype.strLength = function()
{
    var vStr = this.trim().split("");
    var vLength = 0;
    
    for (i = 0 ; i < vStr.length ; i++)
    {
		vTemp = escape(vStr[i]);
		vLength += (vTemp.indexOf("%u", 0) == -1) ? 1 : 2;
    }
    
    return vLength;
}

String.prototype.cnLength = function(){
	
	var str = this.trim();
	var len = str.length;
	var cnStr = str.replace(/[\x00-\x7f]/g, '');
    return Math.ceil((len-cnStr.length)/2) + cnStr.length;
}

String.prototype.isCdKey = function()
{
	var vStr = this.trim();
	var vReg = /^[A-Za-z0-9]{5}-[A-Za-z0-9]{5}-[A-Za-z0-9]{5}$/;
	
	return vReg.test(vStr);
}
String.prototype.isUserName = function()
{
	var vStr = this.trim();
	var vReg = /^[a-zA-Z][\w]{3,50}$/;
	
	if(vStr.isEmail()) return true;
        if(vStr.isMobile()) return true;
	
	if(vReg.test(vStr))
        {
                return true;
        }
        else
        {
                var vRegAlipay = /[@(alipay|gld)]$/;
                return vRegAlipay.test(vStr);
        }
}

String.prototype.isNickName = function()
{
	var vStr = this.trim();
	var vReg = /^([\u4E00-\u9FA5\w])+$/;
	
	//if (vStr.length < 2 || vStr.length > 6)
	if (vStr.strLength() < 4 || vStr.strLength() > 16)
	{
		return false;
	} else {
		return vReg.test(vStr);
	}
}
// /^/w+((-/w+)|(/./w+))*/@[A-Za-z0-9]+((/.|-)[A-Za-z0-9]+)*/.[A-Za-z0-9]+$/
String.prototype.isEmail = function()
{
	var vStr = this.trim();
	var vReg = /^\w+([-+.]\w+[-]*)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	//var vReg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
	
	if (vStr.strLength() < 3 || vStr.strLength() > 50)
	{
		return false;
	} else {
		return vReg.test(vStr);
	}
}

String.prototype.isPassword = function()
{
	var vStr = this.trim();
//	var vReg = /^[a-zA-Z0-9]{6,16}$/;
	var vReg = /^[!-~]+$/;
	return vReg.test(vStr);
}

String.prototype.isRealName = function()
{
	var vStr = this.trim();
	var vReg = /^([\u4E00-\u9FA5])+$/;
	
	if (vStr.strLength() < 1 || vStr.strLength() > 10)
	{
		return false;
	} else {
		return vReg.test(vStr);
	}
}

String.prototype.isAnswer = function()
{
	var vStr = this.trim();
	var vReg = /^([\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[\w])+$/;
	
	if (vStr.strLength() < 1 || vStr.strLength() > 30)
	{
		return false;
	} else {
		return vReg.test(vStr);
	}
}

String.prototype.isZipCode = function()
{
	var vStr = this.trim();
	var vReg = /^([0-9]{6})$/;
	return vReg.test(vStr);
}
String.prototype.isCode = function()
{
	var vStr = this.trim();
	var vReg = /^([0-9]{6})$/;
	return vReg.test(vStr);
}

String.prototype.isTel = function()
{
	var vStr = this.trim();
	var vReg = /^[\d\-]{6,20}$/;
	return vReg.test(vStr);
}

String.prototype.isWeixin = function()
{
	var vStr = this.trim();
	if ( vStr.strLength() > 50){
		return false;
	}
	var vReg = /^[\w-]+$/;
	return vReg.test(vStr) || vStr.isEmail();
	//return vStr.isMobile() || vStr.isEmail() || vStr.isInt() ||vStr.isLetter();
}
String.prototype.isSkype = function()
{
	var vStr = this.trim();
	//var vReg = /^(13[4-9]|15(0|1|2|7|8|9))\d{8}$/;
	var vReg = /^[A-Za-z][A-Za-z0-9]{5,31}$/;
	return vReg.test(vStr);
}
String.prototype.isMobile = function()
{
	var vStr = this.trim();
	//var vReg = /^(13[4-9]|15(0|1|2|7|8|9))\d{8}$/;
	var vReg = /^1(3|4|5|8)\d{9}$/;
	return vReg.test(vStr);
}

String.prototype.isProof = function()
{
	var vStr = this.trim();
	var vReg = /^[\d]{8}\-0[\d]+\-[0-9a-fA-F]{6}$/;
	return vReg.test(vStr);
}

String.prototype.isIDCard = function()
{
	var vCid = this.trim();
	var vSum = 0;
	var vReg = /^([\d]{17}[xX\d]|[\d]{15})$/;
	var vCity = '|11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91|';
	var twReg = /^[a-zA-Z][0-9]{9}$/; //台湾
	var amReg = /^[1|5|7][0-9]{6}\(?[0-9A-Z]\)?$/;//澳门
	var xgReg = /^[A-Z]{1,2}[0-9]{6}\(?[0-9A]\)?$/;//香港
	return vReg.test(vCid) || twReg.test(vCid) || amReg.test(vCid) || xgReg.test(vCid);
}
String.prototype.isCard = function()
{
	var vCid = this.trim();
	var vSum = 0;
	var vReg = /^([\d]{17}[xX\d]|[\d]{})$/;
	var vCity = '|11|12|13|14|15|21|22|23|31|32|33|34|35|36|37|41|42|43|44|45|46|50|51|52|53|54|61|62|63|64|65|71|81|82|91|';
	
	if (!vReg.test(vCid)) return false;
	
	if(vCity.indexOf(parseInt(vCid.substr(0,2))) == '-1') return false;
	
	vCid = vCid.replace(/[xX]$/i, 'a');
	
	if (vCid.length == 18)
	{
		vBirthday = vCid.substr(6, 4) + '/' + Number(vCid.substr(10, 2)) + '/' + Number(vCid.substr(12, 2));
	} else {
		vBirthday = '19' + vCid.substr(6, 2) + '/' + Number(vCid.substr(8, 2)) + '/' + Number(vCid.substr(10, 2));
	}
	
	var vDate = new Date(vBirthday);
	
	if (vBirthday != (vDate.getFullYear() + '/' + (vDate.getMonth() + 1) + '/' + vDate.getDate())) return false;
	
	if (vCid.length == 18)
	{
		for(var i = 17 ; i >= 0 ; i--) vSum += (Math.pow(2, i) % 11) * parseInt(vCid.charAt(17 - i), 11);
  		if(vSum % 11 != 1) return false;
  	}
  	
  	return true;
}

String.prototype.isInt = function()
{
	var vStr = this.trim();
	var vReg = /^([1-9]+)([0-9]*)$/;
	return vReg.test(vStr);
}

String.prototype.isMoney = function()
{
	var vStr = this.trim();
	var vReg = /^\d+(\.\d{1,2})?$/;
	return vReg.test(vStr);
}

String.prototype.isEnglish = function()
{
	var vStr = this.trim();
	var vReg = /^[A-Za-z]+$/;
	return vReg.test(vStr);
}

String.prototype.isChinese = function()
{
	var vStr = this.trim();
	var vReg = /^[\u0391-\uFFE5]+$/;
	return vReg.test(vStr);
}

String.prototype.isCardNo = function()
{
	var vStr = this.trim();
	var vReg = /^[0-9A-Z]{2}[\d]{14}$/;
	return vReg.test(vStr);
}

String.prototype.isCardPwd = function()
{
	var vStr = this.trim();
	var vReg = /^[\d]{8,12}$/;
	return vReg.test(vStr);
}

String.prototype.isSzxCardNo = function()
{
	var vStr = this.trim();
	var vReg = /^[\d]{17}$/;
	return vReg.test(vStr);
}

String.prototype.isSzxCardPwd = function()
{
	var vStr = this.trim();
	var vReg = /^[\d]{18}$/;
	return vReg.test(vStr);
}

function getPasswordStrength(password) {
	var hasNum = false;
	var hasUpperLetter = false;
	var hasLowerLetter = false;
	for(var i=0;i<password.length;i++) {
		var chr = password.charCodeAt(i); 
		if(chr>=48 && chr<=57) {//数字
			hasNum = true;
		}
		if( (chr>=65 && chr<=90 )//大写字母
				|| (chr>=91 && chr<=96 )//特殊符号
				|| (chr>=33 && chr<=47 )//特殊符号
				|| (chr>=58 && chr<=64 )//特殊符号
				||(chr>=123 && chr<=126 )//特殊符号
				) {
			hasUpperLetter = true;
		}
		if(chr>=97 && chr<=122) {//小写字母
			hasLowerLetter = true;
		}
	}
	var count = 0;
	if(hasNum) {
		count ++;
	}
	if(hasUpperLetter) {
		count ++;
	}
	if(hasLowerLetter) {
		count ++;
	}
	if(count==3 && password.length <9)  {
		count --;
	}
	return count;
}

